#include <iostream>
#include <future>
#include <chrono>

int calculateSquare(int x) {
    std::this_thread::sleep_for(std::chrono::seconds(2)); // 模拟长时间计算
    return x * x;
}

int main() {
    // 使用 std::async 启动异步任务
    std::future<int> future = std::async(std::launch::async, calculateSquare, 5);

    std::cout << "Calculating square asynchronously..." << std::endl;

    // 在这里可以执行其他操作
    // ...

    // 获取结果，阻塞直到结果可用
    int result = future.get(); // 等待异步任务完成并获取结果

    std::cout << "Square is: " << result << std::endl;

    return 0;
}
